DBCP object created 日期 by the following code was never closed:

您所在的位置:网站首页 dbcp object create never close DBCP object created 日期 by the following code was never closed:

DBCP object created 日期 by the following code was never closed:

2024-06-06 20:45| 来源: 网络整理| 查看: 265

DBCP object created 日期 by the following code was never closed: 最後更新:2014-10-27 來源:互聯網 上載者:User 創建阿里雲帳戶,並獲得超過 40 款產品的免費試用版;而企業帳戶則可以享有總值 $1200 的免費試用版。立即註冊!

標籤:io   os   使用   java   for   sp   檔案   資料   on   

1、分析    

  看到標題 DBCP 首先想到的肯定是 資料庫連接池哪方面有問題,那麼先別著急去解決,不要一股腦就鑽進邏輯代碼中,然後啟用調試就開始一步一步

的分析。我們首先要做的就是想,想想資料庫連接池,在項目中是如何?的,那麼不管你或早或晚,都會想到資料庫連接池相關的設定檔和代碼。那麼

問題來了,是否是設定檔配置的有問題(挖掘技術哪家強?)?

  那麼先來分析下各項串連池配置的屬性:

  #回收被遺棄的(一般是忘了釋放的)資料庫連接到串連池中。   dataBase.removeAbandoned =false

  # 資料庫連接過多長時間不用將被視為被遺棄而收回串連池中。   dataBase.removeAbandonedTimeout = 30

  # 將被遺棄的資料庫連接的回收記入日誌。   dataBase.logAbandoned = false

  #串連池的最大資料庫連接數,設為0 表示無限制。   dataBase.maxActive = 200

  #資料庫連接的最大空閑串連數。超過此空閑串連數,,資料庫連接將被標記為不可用,然後被釋放。設為0 表示無限制。   dataBase.maxIdle=40

  #最大建立串連等待時間。如果超過此時間將接到異常。設為-1 表示無限制  dataBase.maxWait=10000

  #取得、返回對象和空閑時是否進行驗證,檢查對象是否有效,預設都為false即不驗證  dataBase.testOnBorrow=true  dataBase.testWhileIdle=true  dataBase.testOnReturn=true  dataBase.validationQuery=select 1 from dual

  說明:

  1. #回收被遺棄的(一般是忘了釋放的)資料庫連接到串連池中。   dataBase.removeAbandoned =false

  如果這個值為true一般是用來調試的時候用的,正式發布後應該改為false,2. # 將被遺棄的資料庫連接的回收記入日誌。 

  dataBase.logAbandoned = false

  這個如果設定為true就會引起如下錯誤:  DBCP object created 日期 by the following code was never closed:  java.lang.Exception   

  3.#串連池的最大資料庫連接數,設為0 表示無限制。 

  dataBase.maxActive = 200

  #資料庫連接的最大空閑時間。超過此空閑時間,資料庫連接將被標記為不可用,然後被釋放。設為0 表示無限制。   dataBase.maxIdle=40

  會有可能出現:Cannot get a connection, pool error Timeout waiting for idle object這樣的錯誤

  (轉載網上資料)  

 

2、深入

  不小心暴露的解決方案,那麼 到底是為什麼呢?

  原因是:dataBase.removeAbandoned = true  

  設定為true以後,使用這個配置將會使用AbandonedObjectPool,同時上方也提到過,此配置只建議在開發階段使用

  因為,AbandonedObjectPool能幫你發現佔用串連過長的代碼,比如LOG資訊,說明getCustomerOnline佔用串連的時間

  超過了removeAbandonedTimeout設定的時間,所以設定dataBase.removeAbandoned = false就行了,

  AbandonedObjectPool只在開發使用,在後續的版本會去掉,並且現在的API都棄用(不贊成)了,因此在使用此

  功能的時候多多注意。

  

 

DBCP object created 日期 by the following code was never closed:

本文章原先以中文撰寫並發佈於 aliyun.com,亦設英文版本,僅作資訊用途。本網站不對文章的準確性,完整性或可靠性或其任何翻譯作出任何明示或暗示的陳述或保證。如對該文章有任何疑慮或投訴,請傳送電郵至 [email protected] 並提供相關疑慮或投訴的詳細說明。職員會於 5 個工作天內與您聯絡,一經驗證之後,即會刪除該侵權內容。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3